package frame

import (
	"bytes"

	"gitee.com/yanwc/ebike-xiaoan-device/internal/field"
	"gitee.com/yanwc/net/utils"
)

type (
	Magic    uint16
	MagicRaw [2]byte
)

func (t Magic) IndexOf(buf []byte) (idx int) {
	b := utils.NumberToBytesWithBigEndian(t)
	idx = bytes.IndexAny(buf, string(b))
	if idx < 0 {
		return -1
	}

	return
}

type IFrame interface {
	WrapPacket(data []byte) (out []byte) // 封包
	UnWrapPacket(data []byte) error      // 拆包
	RawData() []byte                     // 原始数据帧
	Content() []byte                     // 数据帧内容
	GetSN() field.SerialNumber           // 消息序列号
	GetCmdWord() field.CommandWord       // 命令字
	CRCCheck() bool                      // 帧校验
}
